package com.kitbox.hl.meshow.common.spring;

import org.springframework.core.env.Environment;

import java.io.*;
import java.util.Properties;
import java.util.ResourceBundle;

import static cn.hutool.core.util.ClassUtil.getClassLoader;

/**
 * @Auther: honglei
 * @Date: 2019/9/2 14:51
 * @Description:  普通类获取 属性配置工具 需配合PropertiesConfig注入
 */
public class PropertiesUtil {
    private static Environment env = null;

    public static void setEnvironment(Environment env) {
        PropertiesUtil.env = env;
    }

    public static String getProperty(String key) throws IOException {
            if (env==null)
                return getProperty(key,"D:\\ProjectJava\\project-learn\\springcloud-kit\\meshow-springcloud-bpm\\src\\main\\resources\\isc-bpm.properties");

        return PropertiesUtil.env.getProperty(key);
    }

/*    首先，Java中的getResourceAsStream有以下几种：
            1. Class.getResourceAsStream(String path) ： path 不以’/'开头时默认是从此类所在的包下取资源，以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径，最终还是由ClassLoader获取资源。
            2. Class.getClassLoader.getResourceAsStream(String path) ：默认则是从ClassPath根下获取，path不能以’/'开头，最终是由ClassLoader获取资源。
            3. ServletContext. getResourceAsStream(String path)：默认从WebAPP根目录下取资源，Tomcat下path是否以’/'开头无所谓，当然这和具体的容器实现有关。
            4. Jsp下的application内置对象就是上面的ServletContext的一种实现。
            */

//    public static String getProperty(String key,String classPath) throws IOException {
//        Properties properties = new Properties();
//        // 使用ClassLoader加载properties配置文件生成对应的输入流
//        InputStream in = getClassLoader().getResourceAsStream(classPath);
//        // 使用properties对象加载输入流
//        properties.load(in);
//        //获取key对应的value值
//        return properties.getProperty(key);
//      ResourceBundle resource = ResourceBundle.getBundle(classPath);
//      return resource.getString(key);

//    }





    public static String getProperty(String key,String fileName)throws IOException {
        Properties properties = new Properties();
        // 使用InPutStream流读取properties文件
        BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName));
        properties.load(bufferedReader);
        // 获取key对应的value值
        return properties.getProperty( key);
    }

}
